﻿using AutoMapper;
using memo.entity.DTO;
using memo.entity.PO;

namespace memo.Config; 

public class MappingProfile : Profile {
    
    public MappingProfile() {
        // 启用动态映射（v12+）
        // CreateMap<object, object>()
        //     .ConvertUsing((src, dest, context) => {
        //         // 如果类型相同，直接返回（避免递归）
        //         if (src.GetType() == dest?.GetType())
        //             return src;
        //
        //         // 否则尝试映射
        //         return context.Mapper.Map(
        //             src, 
        //             dest ?? Activator.CreateInstance(src.GetType()), 
        //             src.GetType(), 
        //             dest?.GetType() ?? src.GetType()
        //         );
        //     });
        
        
        // 可以自定义其他映射规则 
        // 双向映射：Memo ⇄ MemoDto
        CreateMap<Memo, MemoDto>().ReverseMap();
        // //将 Memo 对象的 Content 属性映射到 MemoDto 的 Content 属性(名字不一样的时候有用)
        // CreateMap<Memo, MemoDto>()
        //     .ForMember(dest => dest.Content, 
        //         opt => opt.MapFrom(src => src.Content));
        // // 忽略 Memo 对象的 CreateTime 属性
        // CreateMap<Memo, MemoDto>()
        //     .ForMember(dest => dest.CreateTime, opt => opt.Ignore());


        CreateMap<User, UserDto>().ReverseMap();
    }
    
}